//! Header for the Object class
/*!
	\file Object.h
	\author Thomas Pfeiffer
	\date 22.11.2012

*/
#ifndef OBJECT_H
#define OBJECT_H

//! Common Baseclass for all other classes. 
/*!
	The class Object has no special functionality. It's just to have a 
	common base for all the other classes.
	\class Object
	\author Thomas Pfeiffer
	\date 13.11.2012
*/
class Object {
public:
	Object() {};

	//! DTor of the Object class
	/*!
	The Destructor needs to be virtul so that the destructor
	of Base-classes is being called in case we use polymorphism
	*/
	virtual ~Object() {};

	//! Frees the memory used by obj
	/*!
	A static function which allows you to easily free
	memory of allocated by the object which the param
	obj is pointing to. This function is useful because
	everything derives from object and thus can be
	freed using this function.
	\param obj A Pointer to the Object in the memory you want
	to free.
	*/
	static void deleteObject(Object * obj);

private:
	// make Copy CTor and assignment operator private so
	// no class is copyable except it explicitly implements
	// the copy CTor.
	Object(Object const& obj) {};
	Object & operator=(Object const& obj) {};
};

#endif